home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 April: Mac OS SDK / Dev.CD Apr 96 SDK / Dev.CD Apr 96 SDK2.toast / Development Kits (Disc 2) / QuickTime / Programming Stuff / Documentation / develop articles / develop Issue 24 / Sound Secrets / ExportAIFF.c next >
Encoding:
C/C++ Source or Header  |  1995-08-21  |  2.1 KB  |  104 lines  |  [TEXT/MMCC]

  1. /*
  2.     File:        ExportAIFF.c
  3.  
  4.     Contains:    A program to demonstrate how to export a QuickTime movie
  5.                 to an AIFF file.
  6.     
  7.     Written by:    Kip Olson, Apple Computer
  8. */
  9.  
  10. #include <Types.h>
  11. #include <Movies.h>
  12. #include <Fonts.h>
  13. #include <StandardFile.h>
  14. #include <Memory.h>
  15. #include <Files.h>
  16. #include <Resources.h>
  17.  
  18. void    main(void);
  19. OSErr    ConvertMovieToAIFF(FSSpec *inputFile, FSSpec *outputFile);
  20. void    AppendStr(Str255 target, Str255 source);
  21.  
  22. void main(void)
  23. {
  24.     StandardFileReply        reply;
  25.     FSSpec                    outputFile;
  26.     SFTypeList                fileTypes = { 'MooV', 0, 0, 0 };
  27.     OSErr                    err;
  28.  
  29.     /*    ---------------------------------
  30.             Initialize the world
  31.         --------------------------------- */
  32.  
  33.     InitGraf((Ptr) &qd.thePort);
  34.     InitFonts();
  35.     InitWindows();
  36.     InitMenus();
  37.     TEInit();
  38.     InitDialogs(nil);
  39.     InitCursor();
  40.     MaxApplZone();
  41.  
  42.     err = EnterMovies();
  43.     if (err != noErr)
  44.     {
  45.         DebugStr("\pEnterMovies failed");
  46.         return;
  47.     }
  48.  
  49.     /*    ---------------------------------
  50.             Open the input movie file
  51.         --------------------------------- */
  52.  
  53.     StandardGetFilePreview(nil, 1, fileTypes, &reply);
  54.  
  55.     if (!reply.sfGood)
  56.         return;
  57.  
  58.     /*    ---------------------------------
  59.             Convert movie to AIFF file
  60.         --------------------------------- */
  61.  
  62.     outputFile = reply.sfFile;
  63.     AppendStr(outputFile.name, "\p AIFF");
  64.     
  65.     err = ConvertMovieToAIFF(&reply.sfFile, &outputFile);
  66.     if (err != noErr)
  67.         DebugStr("\pConversion failed");
  68. }
  69.  
  70. OSErr ConvertMovieToAIFF(FSSpec *inputFile, FSSpec *outputFile)
  71. {
  72.     short        fRef;
  73.     Movie        theMovie;
  74.     OSErr        err;
  75.  
  76.     err = OpenMovieFile(inputFile, &fRef, fsRdPerm);
  77.     if (err != noErr)
  78.         goto OpenMovieFileFailed;
  79.  
  80.     err = NewMovieFromFile(&theMovie, fRef, nil, nil, 0, nil);
  81.     if (err != noErr)
  82.         goto NewMovieFromFileFailed;
  83.  
  84.     SetMovieProgressProc(theMovie, (MovieProgressUPP) -1L, 0);
  85.  
  86.     err = ConvertMovieToFile(theMovie, nil, outputFile, 'AIFF', 'sSnd',
  87.                              0, nil, showUserSettingsDialog, nil);
  88.  
  89.     DisposeMovie(theMovie);
  90. NewMovieFromFileFailed:
  91.     CloseMovieFile(fRef);
  92. OpenMovieFileFailed:
  93.     return (err);
  94. }
  95.  
  96. void AppendStr(Str255 target, Str255 source)
  97. {
  98.     short     i;
  99.  
  100.     for (i = 1; i <= source[0]; i++)
  101.         target[target[0] + i] = source[i];
  102.     target[0] += source[0];
  103. }
  104.